/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.gov.cemaden.smp.controler;

import br.gov.cemaden.library.model.smp.Memoria;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;

/**
 *
 * @author Simone Santos
 */
public class MemoriaSistemaBean implements Serializable {

    Memoria memoria = new Memoria();
    
    public MemoriaSistemaBean() {
    }

    public Memoria getMemoria() {
        Sigar sigar = new Sigar();
        Mem mem = null;
        try {
            mem = sigar.getMem();
        } catch (SigarException ex) {
            Logger.getLogger(MemoriaSistemaBean.class.getName()).log(Level.SEVERE, null, ex);
        }

        //já esta em MB apenas convertendo para double
        double mydouble = (double) (mem.getRam());
        //converte de long para MB  e arredondar   
        double mLivreTotalReal = Math.round(((mem.getActualFree() / 1024.0) / 1024.0) * 100.0) / 100.0;
        double mtotal = Math.round(((mem.getTotal() / 1024.0) / 1024.0) * 100.0) / 100.0;
        double mUsadaTotalReal = Math.round(((mem.getActualUsed() / 1024.0) / 1024.0) * 100.0) / 100.0;
        double mTotalUtilizado = Math.round(((mem.getUsed() / 1024.0) / 1024.0) * 100.0) / 100.0;
        double mTotalLivre = Math.round(((mem.getFree() / 1024.0) / 1024.0) * 100.0) / 100.0;

        memoria.setMemoryRam(mydouble);
        memoria.setMemoryLivreTotalReal(mLivreTotalReal);
        memoria.setMemoryTotal(mtotal);
        memoria.setMemoryUsadaTotalReal(mUsadaTotalReal);
        memoria.setMemoryTotalUtilizado(mTotalUtilizado);
        memoria.setMemoryTotalLivre(mTotalLivre);

        return memoria;
    }

    public void show(Memoria t) {
        System.out.println("MemoriaRam: " + t.getMemoryRam() + " MB");
        System.out.println("MemoryLivreTotalReal: " + t.getMemoryLivreTotalReal() + " MB");
        System.out.println("MemoryTotal: " + t.getMemoryTotal() + " MB");
        System.out.println("MemoryUsadaTotalReal: " + t.getMemoryUsadaTotalReal() + " MB");
        System.out.println("MemoryTotalUtilizado: " + t.getMemoryTotalUtilizado() + " MB");
        System.out.println("MemoryTotalLivre: " + t.getMemoryTotalLivre() + " MB");
        System.out.println("--------------------------------\n");
    }
}
